"""
Problem 43: https://projecteuler.net/problem=43

The number, 1406357289, is a 0 to 9 pandigital number because it is made up of
each of the digits 0 to 9 in some order, but it also has a rather interesting
sub-string divisibility property.

Let d1 be the 1st digit, d2 be the 2nd digit, and so on. In this way, we note
the following:

d2d3d4=406 is divisible by 2
d3d4d5=063 is divisible by 3
d4d5d6=635 is divisible by 5
d5d6d7=357 is divisible by 7
d6d7d8=572 is divisible by 11
d7d8d9=728 is divisible by 13
d8d9d10=289 is divisible by 17
Find the sum of all 0 to 9 pandigital numbers with this property.
"""

# _*_ conding:UTF-8 _*_
'''
@author = Kuperain
@email = kuperain@aliyun.com
@IDE = VSCODE Python3.8.3
@creat_time = 2022/5/14                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
'''




import itertools
def solution() -> int:

    pandigitalnumbers = itertools.permutations((range(10)))
    res = 0
    for d in pandigitalnumbers:
        if d[0] != 0 and (
           d[3] % 2 == 0) and (
                (d[2]+d[3]+d[4]) % 3 == 0) and (
                d[5] == 0 or d[5] == 5) and (
                (100*d[4]+10*d[5]+d[6]) % 7 == 0) and (
                (d[5]-d[6]+d[7]) % 11 == 0) and (
                (100*d[6]+10*d[7]+d[8]) % 13 == 0) and (
                (100*d[7]+10*d[8]+d[9]) % 17 == 0):
            print(d)
            res += int(''.join(map(str, d)))

    return res


if __name__ == "__main__":
    import doctest
    doctest.testmod(verbose=False)

    print(solution())
    # 16695334890

    '''
    (1, 4, 0, 6, 3, 5, 7, 2, 8, 9)
    (1, 4, 3, 0, 9, 5, 2, 8, 6, 7)
    (1, 4, 6, 0, 3, 5, 7, 2, 8, 9)
    (4, 1, 0, 6, 3, 5, 7, 2, 8, 9)
    (4, 1, 3, 0, 9, 5, 2, 8, 6, 7)
    (4, 1, 6, 0, 3, 5, 7, 2, 8, 9)
    '''
